package com.hengpeng.itfin.persist;

import java.util.List;

import com.hengpeng.common.persist.NestedSimplyDao;
import com.hengpeng.itfinbase.en.InvestStatus;
import com.hengpeng.itfinbase.persist.InvestInfo;

/**
 * <pre>
 * 投资持久层
 * </pre>
 * 
 * @author weiyuan
 * @version 1.0, 2015年6月2日
 */
public interface InvestInfoDao extends NestedSimplyDao<InvestInfo> {
    /**
     * <pre>
     * 获取投资信息
     * </pre>
     * 
     * @param id
     * @param status
     * @return
     */
    public InvestInfo getInvestInfo(Long id, InvestStatus status);

    /**
     * <pre>
     * 获取投资列表
     * </pre>
     * 
     * @param borrowId
     * @param status
     * @return
     */
    public List<InvestInfo> queryList(Long borrowId, InvestStatus[] status);

    /**
     * <pre>
     * 保存所有的投标信息
     * </pre>
     * 
     * @param invests
     */
    public void saveList(List<InvestInfo> invests);

    /**
     * <pre>
     * 更新投资信息
     * </pre>
     * 
     * @param invest
     */
    public void updateInvest(InvestInfo invest);

    public void saveInvest(InvestInfo invest);

    /**
     * <pre>
     * 更新投资信息
     * </pre>
     * 
     * @param invests
     */
    public void updateList(List<InvestInfo> invests);

    /**
     * <pre>
     * 获取标的下的投资记录数
     * </pre>
     * 
     * @param borrowId
     * @return
     */
    public long countByBorrowId(Long borrowId, InvestStatus[] status);

    public List<InvestInfo> lockList(Long borrowId, InvestStatus[] status);

    public int updateStatus(Long id, InvestStatus oldStatus, InvestStatus newStatus);

    public int updateAllStatus(Long borrowInfoId, InvestStatus oldStatus, InvestStatus newStatus);

    public int updateStatusAndFreeId(Long id, String freeOrderId, InvestStatus oldStatus, InvestStatus newStatus);

    /**
     * 投标取消
     * 
     * @param unfreeid
     * @param oldStatus
     * @param newStatus
     * @return
     */
    public int cancel(String unfreeid, InvestStatus oldStatus, InvestStatus newStatus);
}
